<!--
  ~ -
  ~  ============LICENSE_START=======================================================
  ~  Copyright (C) 2023 Nordix Foundation.
  ~  ================================================================================
  ~  Licensed under the Apache License, Version 2.0 (the "License");
  ~  you may not use this file except in compliance with the License.
  ~  You may obtain a copy of the License at
  ~
  ~       http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~  Unless required by applicable law or agreed to in writing, software
  ~  distributed under the License is distributed on an "AS IS" BASIS,
  ~  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  ~  See the License for the specific language governing permissions and
  ~  limitations under the License.
  ~
  ~  SPDX-License-Identifier: Apache-2.0
  ~  ============LICENSE_END=========================================================
  -->

<div class="component-container">
  <ng-container [formGroup]="formGroup">
    <div *ngIf="!isDefaultCustomFunction" class="i-sdc-form-item">
      <label>Custom function name: </label>
      <div class="i-sdc-form-item">
        <input type="text" formControlName="customName" [value]="name" (input)="name = $event.target.value" required/>
      </div>
    </div>
    <div formArrayName="customParameterList">
      <div *ngFor="let parameter of parameters; let idx = index">
        <div *ngIf="idx > 0 && type != GET_INPUT" class="text-center"><span class="custom-plus-icon"></span></div>
        <div class="parameter-card" *ngIf="type != GET_INPUT">
          <div class="card-content">
            <ng-container *ngIf="parameter.type === STRING_FUNCTION_TYPE">
              <input type="text" [formControlName]="idx" [value]="parameter.value"/><br/>
            </ng-container>
            <ng-container *ngIf="parameter.type !== STRING_FUNCTION_TYPE">
              <tosca-function [property]="propertyInputList[idx]"
                              [customToscaFunctions]="customToscaFunctions"
                              [componentInstanceMap]="componentInstanceMap"
                              [allowClear]="false"
                              (onValidityChange)="onFunctionValidityChange($event, idx)">
              </tosca-function>
            </ng-container>
            <div *ngIf="type != GET_INPUT" class="buttons-container">
              <span class="delete-icon" (click)="removeParameter(idx)"></span>
            </div>
          </div>
        </div>
        <ng-container *ngIf="type === GET_INPUT">
          <app-tosca-get-function [property]="propertyInputList[idx]" [toscaGetFunction]="toscaGetFunction"
                                  [componentInstanceMap]="componentInstanceMap"
                                  [functionType]="GET_INPUT"
                                  (onValidityChange)="onGetFunctionValidityChange($event, idx)">
          </app-tosca-get-function>
        </ng-container>
      </div>
    </div>
  </ng-container>
  <div *ngIf="type != GET_INPUT" class="buttons-container">
    <a class="add-link" (click)="addStringParameter()">String Value</a> <a class="add-link" (click)="addFunction()">TOSCA Function Expression</a>
  </div>
</div>
